/*********************************************************************************
  *Copyright (c)    2021   xldeng
  *FileName:        986.cpp.c
  *Author:          xldeng
  *Version:         1.0
  *Date:            2021/2/12 13:56
  *Description:     
  *Others:          
  *Function List:   
     1.…………
  *History:  
     1.Date:
       Author:
       Modification:
**********************************************************************************/
//给定两个由一些 闭区间 组成的列表，firstList 和 secondList ，
//其中 firstList[i] = [starti, endi] 而secondList[j] = [startj, endj] 。
// 每个区间列表都是成对 不相交 的，并且 已经排序 。
//
//返回这 两个区间列表的交集 。
//
//形式上，闭区间[a, b]（其中a <= b）表示实数x的集合，而a <= x <= b 。
//
//两个闭区间的 交集 是一组实数，要么为空集，要么为闭区间。例如，[1, 3] 和 [2, 4] 的交集为 [2, 3] 。
#include "../header.h"
class Solution {
public:
    vector<vector<int>> intervalIntersection(vector<vector<int>>& firstList, vector<vector<int>>& secondList) {
        vector<vector<int>> ans;
        if (firstList.empty() || secondList.empty())
            return ans;
        int i = 0, j= 0,lo,hi;
        while (i < firstList.size() && j < secondList.size()){
            lo = max(firstList[i][0],secondList[j][0]);
            hi = min(firstList[i][1],secondList[j][1]);
            if (lo <= hi)
                ans.push_back({lo,hi});
            if (firstList[i][1] < secondList[j][1])
                i++;
            else
                j++;
        }
        return ans;
    }
};
